﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Collections;
using System.Transactions;

#region Localidade
namespace Distrackting.DataLayer
{
    public partial class Localidade
    {
        public void setLocalidade(Localidade l)
        {
            this.cod_localidade = l.cod_localidade;
            this.nome = l.nome;
        }
    }
}
#endregion


#region dataLocalidade
namespace Distrackting.DataLayer
{
    public class dataLocalidade
    {
        #region Methods
        public static Guid createLocalidade(Localidade l)
        {

            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                l.cod_localidade = System.Guid.NewGuid();
                dbData.Localidades.InsertOnSubmit(l);
                dbData.SubmitChanges();
                return l.cod_localidade;
            }
            catch (Exception e)
            {
                throw e;
            }
        }





        public static Localidade getLocalidade(Guid guid)
        {
            try
            {
                if (guid == null) return null;
                dbDataDataContext dbData = new dbDataDataContext();

                Localidade loc = (from l in dbData.Localidades
                                  where l.cod_localidade == guid
                                  select l).FirstOrDefault();
                return loc;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Boolean changeLocalidade(Localidade l)
        {
            try
            {
                if (l == null)
                    return false;
                else
                {
                    dbDataDataContext dbData = new dbDataDataContext();
                    Localidade res = dbData.Localidades.FirstOrDefault(loc => loc.cod_localidade == l.cod_localidade);
                    if (res == null) return false;
                    else
                    {
                        res.setLocalidade(l);
                        dbData.SubmitChanges();
                        return true;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }



        

        public static IQueryable<Localidade> getLocalidades()
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                return dbData.Localidades;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static IQueryable<Localidade> getLocalidades(Expression<Func<Localidade, bool>> whereClause)
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                return dbData.Localidades.Where(whereClause);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Boolean deleteLocalidade(Localidade l)
        {
            try
            {
                dbDataDataContext dbData = new dbDataDataContext();
                if (dbData.Localidades.Contains(l))
                {
                    Localidade res = (from loc in dbData.Localidades
                                      where loc.cod_localidade == l.cod_localidade
                                      select loc).FirstOrDefault();
                    if (res == null)
                        return false;
                    else
                    {
                        dbData.Localidades.DeleteOnSubmit(l);
                        dbData.SubmitChanges();
                        return true;
                    }
                }
                else return false;
            }
            catch (Exception e)
            {
                throw e;
            }
        }


        #endregion
    }
}
#endregion